﻿using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CoreCms.Net.IServices.Pay
{
    /// <summary>
    ///     区块链钱包支付 服务工厂接口
    /// </summary>
    public interface IWalletPayServices : IBaseServices<CoreCmsSetting>
    {
        /// <summary>
        ///     发起支付
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        Task<WebApiCallBack> PubPay(CoreCmsBillPayments entity,CoreCmsPayments paySetting);
        /// <summary>
        ///     广播交易
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        Task<WebApiCallBack> PubPaySend(CoreCmsBillPayments entity, CoreCmsPayments paySetting);
        /// <summary>
        ///     确认交易
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        Task<WebApiCallBack> PubPaySuccess(CoreCmsBillPayments entity, CoreCmsPayments paySetting);


        /// <summary>
        ///     用户余额退款
        /// </summary>
        /// <param name="refundInfo">退款单数据</param>
        /// <param name="paymentInfo">支付单数据</param>
        /// <returns></returns>
        Task<WebApiCallBack> Refund(CoreCmsBillRefund refundInfo, CoreCmsBillPayments paymentInfo);
    }
}
